﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Services;

using ManageMoney.BussinessLogic;
using ManageMoney.DataType;
using ManageMoney.Utils.Interfaz;
using ManageMoney.Parameters.Constantes;
using ManageMoney.Web.AppCode;

namespace ManageMoney.Web.Forms.Sistema
{
    public partial class EditarTablasEstados : System.Web.UI.Page
    {
        [WebMethod]
        public static KeyValuePair<List<TablaType>, int> ListarTablas(TablaType registroBusqueda, int paginaActual, int cantidadMostrar, string orderBy)
        {
            TablaLogic logic = new TablaLogic();

            List<TablaType> lista = logic.CargarExploradorPaginado(registroBusqueda, paginaActual, cantidadMostrar, orderBy);

            KeyValuePair<List<TablaType>, int> l = new KeyValuePair<List<TablaType>, int>(lista, lista.Capacity);

            return l;
        }

        [WebMethod]
        public static TablaType CargarTabla(string id)
        {
            if (id == "0") return new TablaType();

            TablaLogic logic = new TablaLogic();

            TablaType tabla = logic.CargarPorId(id);

            return tabla;
        }

        [WebMethod]
        public static KeyValuePair<TablaType, bool> GrabarTabla(TablaType tabla)
        {
            TablaLogic logic = new TablaLogic();

            bool nuevo = (tabla.Id == null);

            logic.Grabar(tabla);

            return new KeyValuePair<TablaType, bool>(tabla, nuevo);
        }

        [WebMethod]
        public static string EliminarTabla(string id)
        {
            TablaLogic logic = new TablaLogic();

            logic.Eliminar(id);

            return id;
        }


        [WebMethod]
        public static string ExportarExcelTablas(TablaType registroBusqueda, List<GridJSONField> gridFields)
        {
            TablaLogic logic = new TablaLogic();

            List<TablaType> lista = logic.CargarExploradorPaginado(registroBusqueda, 0, 0, "");

            return InterfazUtils.FileTableHTMLGridJSON(lista, gridFields, ArchivoConfig.FileServer , Sesion.UsuarioMoney.Email, "Tablas", "xls");
        }

        [WebMethod]
        public static EstadoView ListarEstados(EstadoType registroBusqueda, int paginaActual, int cantidadMostrar, string orderBy)
        {
            EstadoLogic logicEstado = new EstadoLogic();

            List<EstadoType> lista = logicEstado.CargarExploradorPaginado(registroBusqueda, paginaActual, cantidadMostrar, orderBy);

            TablaLogic logicTabla = new TablaLogic();

            EstadoView view = new EstadoView();
            
            view.Estados = lista;
            view.TotalRegistros = lista.Capacity;
            view.Tabla = logicTabla.CargarPorId(registroBusqueda.TablaId);

            return view;
        }

        [WebMethod]
        public static EstadoType CargarEstado(string id)
        {
            if (id == "0") return new EstadoType();

            EstadoLogic logic = new EstadoLogic();

            EstadoType estado = logic.CargarPorId(id);

            return estado;
        }

        [WebMethod]
        public static KeyValuePair<EstadoType, bool> GrabarEstado(EstadoType estado)
        {
            EstadoLogic logic = new EstadoLogic();

            bool nuevo = (estado.Id == null);

            logic.Grabar(estado);

            return new KeyValuePair<EstadoType, bool>(estado, nuevo);
        }

        [WebMethod]
        public static string EliminarEstado(string id)
        {
            EstadoLogic logic = new EstadoLogic();

            logic.Eliminar(id);

            return id;
        }


        [WebMethod]
        public static string ExportarExcelEstados(EstadoType registroBusqueda, List<GridJSONField> gridFields)
        {
            EstadoLogic logic = new EstadoLogic();

            List<EstadoType> lista = logic.CargarExploradorPaginado(registroBusqueda, 0, 0, "");

            return InterfazUtils.FileTableHTMLGridJSON(lista, gridFields, ArchivoConfig.FileServer, Sesion.UsuarioMoney.Email, "Estados", "xls");
        }
    }
}